home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 1 / ETO Development Tools 1.iso / Essentials / Developer Essentials Jul 90 / Programming / MPW Interfaces & Libraries 3.1 / PInterfaces / Memory.p < prev    next >
Encoding:
Text File  |  1989-10-13  |  3.7 KB  |  146 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Thursday, February 23, 1989 at 4:35 PM
  3.     Memory.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1985-1988
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT Memory;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingMemory}
  21. {$SETC UsingMemory := 1}
  22.  
  23. {$I+}
  24. {$SETC MemoryIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$IFC UNDEFINED UsingTypes}
  27. {$I $$Shell(PInterfaces)Types.p}
  28. {$ENDC}
  29. {$SETC UsingIncludes := MemoryIncludes}
  30.  
  31. CONST
  32. maxSize = $800000;    {Max data block size is 8 megabytes}
  33.  
  34.  
  35. TYPE
  36.  
  37.  
  38. THz = ^Zone;
  39. Zone = RECORD
  40.     bkLim: Ptr;
  41.     purgePtr: Ptr;
  42.     hFstFree: Ptr;
  43.     zcbFree: LONGINT;
  44.     gzProc: ProcPtr;
  45.     moreMast: INTEGER;
  46.     flags: INTEGER;
  47.     cntRel: INTEGER;
  48.     maxRel: INTEGER;
  49.     cntNRel: INTEGER;
  50.     maxNRel: INTEGER;
  51.     cntEmpty: INTEGER;
  52.     cntHandles: INTEGER;
  53.     minCBFree: LONGINT;
  54.     purgeProc: ProcPtr;
  55.     sparePtr: Ptr;
  56.     allocPtr: Ptr;
  57.     heapData: INTEGER;
  58.     END;
  59.  
  60. Size = LONGINT;     { size of a block in bytes }
  61.  
  62.  
  63.  
  64. FUNCTION GetApplLimit: Ptr;
  65.     INLINE $2EB8,$0130;
  66. FUNCTION GetZone: THz;
  67. FUNCTION SystemZone: THz;
  68.     INLINE $2EB8,$02A6;
  69. FUNCTION ApplicZone: THz;
  70.     INLINE $2EB8,$02AA;
  71. FUNCTION NewHandle(byteCount: Size): Handle;
  72. FUNCTION NewHandleSys(byteCount: Size): Handle;
  73. FUNCTION NewHandleClear(byteCount: Size): Handle;
  74. FUNCTION NewHandleSysClear(byteCount: Size): Handle;
  75. FUNCTION HandleZone(h: Handle): THz;
  76. FUNCTION RecoverHandle(p: Ptr): Handle;
  77. FUNCTION NewPtr(byteCount: Size): Ptr;
  78. FUNCTION NewPtrSys(byteCount: Size): Ptr;
  79. FUNCTION NewPtrClear(byteCount: Size): Ptr;
  80. FUNCTION NewPtrSysClear(byteCount: Size): Ptr;
  81. FUNCTION PtrZone(p: Ptr): THz;
  82. FUNCTION GZSaveHnd: Handle;
  83.     INLINE $2EB8,$0328;
  84. FUNCTION TopMem: Ptr;
  85.     INLINE $2EB8,$0108;
  86. FUNCTION MaxBlock: LONGINT;
  87. FUNCTION StackSpace: LONGINT;
  88. FUNCTION NewEmptyHandle: Handle;
  89. PROCEDURE HLock(h: Handle);
  90. PROCEDURE HUnlock(h: Handle);
  91. PROCEDURE HPurge(h: Handle);
  92. PROCEDURE HNoPurge(h: Handle);
  93. FUNCTION StripAddress(theAddress: Ptr): Ptr;
  94. FUNCTION MFMaxMem(VAR grow: Size): Size;
  95.     INLINE $3F3C,$0015,$A88F;
  96. FUNCTION MFFreeMem: LONGINT;
  97.     INLINE $3F3C,$0018,$A88F;
  98. FUNCTION MFTempNewHandle(logicalSize: Size;VAR resultCode: OSErr): Handle;
  99.     INLINE $3F3C,$001D,$A88F;
  100. PROCEDURE MFTempHLock(h: Handle;VAR resultCode: OSErr);
  101.     INLINE $3F3C,$001E,$A88F;
  102. PROCEDURE MFTempHUnlock(h: Handle;VAR resultCode: OSErr);
  103.     INLINE $3F3C,$001F,$A88F;
  104. PROCEDURE MFTempDisposHandle(h: Handle;VAR resultCode: OSErr);
  105.     INLINE $3F3C,$0020,$A88F;
  106. FUNCTION MFTopMem: Ptr;
  107.     INLINE $3F3C,$0016,$A88F;
  108. PROCEDURE InitApplZone;
  109. PROCEDURE InitZone(pgrowZone: ProcPtr;cmoreMasters: INTEGER;limitPtr: Ptr;
  110.     startPtr: Ptr);
  111. PROCEDURE SetZone(hz: THz);
  112. FUNCTION CompactMem(cbNeeded: Size): Size;
  113. PROCEDURE PurgeMem(cbNeeded: Size);
  114. FUNCTION FreeMem: LONGINT;
  115. PROCEDURE ResrvMem(cbNeeded: Size);
  116. FUNCTION MaxMem(VAR grow: Size): Size;
  117. PROCEDURE SetGrowZone(growZone: ProcPtr);
  118. PROCEDURE SetApplLimit(zoneLimit: Ptr);
  119. PROCEDURE MoveHHi(h: Handle);
  120. PROCEDURE DisposPtr(p: Ptr);
  121. FUNCTION GetPtrSize(p: Ptr): Size;
  122. PROCEDURE SetPtrSize(p: Ptr;newSize: Size);
  123. PROCEDURE DisposHandle(h: Handle);
  124. FUNCTION GetHandleSize(h: Handle): Size;
  125. PROCEDURE SetHandleSize(h: Handle;newSize: Size);
  126. PROCEDURE EmptyHandle(h: Handle);
  127. PROCEDURE ReallocHandle(h: Handle;byteCount: Size);
  128. PROCEDURE HSetRBit(h: Handle);
  129. PROCEDURE HClrRBit(h: Handle);
  130. PROCEDURE MoreMasters;
  131. PROCEDURE BlockMove(srcPtr: Ptr;destPtr: Ptr;byteCount: Size);
  132. FUNCTION MemError: OSErr;
  133.     INLINE $3EB8,$0220;
  134. PROCEDURE PurgeSpace(VAR total: LONGINT;VAR contig: LONGINT);
  135. FUNCTION HGetState(h: Handle): SignedByte;
  136. PROCEDURE HSetState(h: Handle;flags: SignedByte);
  137. PROCEDURE SetApplBase(startPtr: Ptr);
  138. PROCEDURE MaxApplZone;
  139.  
  140. {$ENDC}    { UsingMemory }
  141.  
  142. {$IFC NOT UsingIncludes}
  143.     END.
  144. {$ENDC}
  145.  
  146.